数据拆分分简单拆分和根据指定变量的值拆分等不同情况。[大谦Excel,dqexcel点com]
简单拆分-垂直
【问题描述】
将一个DataFrame的数据在垂直方向简单拆分到不同的文件。
【示例4-1】
本例使用的Excel文件的完整路径为“D:/Samples/ch04/01 数据拆分/简单拆分-垂直/学生成绩.xlsx”。该文件打开后如图4-1所示,是一些学生的语文、数学和英语考试成绩。要求将工作表中的数据在垂直方向上,从上到下每次获取5行数据并保存到一个Excel文件。文件保存在原始数据文件的相同路径下。
图4-1 学生成绩表
- 编写下面的代码:
import pandas as pd
# 读取Excel文件
file_path = "D:/Samples/ch04/01 数据拆分/简单拆分-垂直/学生成绩.xlsx"
data = pd.read_excel(file_path, sheet_name=0, engine="openpyxl")
# 每5行数据保存为一个新的工作簿文件
num_rows_per_file = 5
num_files = (len(data) - 1) // num_rows_per_file + 1
for i in range(num_files):
start_index = i * num_rows_per_file
end_index = min(start_index + num_rows_per_file, len(data))
file_name = "学生成绩_{}.xlsx".format(i+1)
file_path = "D:/Samples/ch04/01 数据拆分/简单拆分-垂直/" + file_name
df = data.iloc[start_index:end_index]
df.to_excel(file_path, sheet_name="Sheet1")
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,实现文件的垂向拆分。可在原始数据文件的相同路径下找到新建的Excel文件。
简单拆分-水平
【问题描述】
将一个DataFrame的数据在水平方向简单拆分到不同的文件。
【示例4-2】
本例使用与示例4-1相同的数据。要求将工作表中的每列数据拆分到一个新的Excel文件。
- 编写下面的代码:
import pandas as pd
# 读取Excel文件数据
data = pd.read_excel('D:/Samples/ch04/01 数据拆分/简单拆分-水平/学生成绩.xlsx', engine='openpyxl')
# 将第1列数据设置为行索引
data.set_index('姓名', inplace=True)
# 遍历每一列数据并保存到新文件中
for col in data.columns:
# 构造新文件名
filename = '学生成绩_{}.xlsx'.format(col)
# 保存数据到新文件
data[[col]].to_excel('D:/Samples/ch04/01 数据拆分/简单拆分-水平/' + filename, engine='openpyxl')
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,实现文件的水平拆分。可在原始数据文件的相同路径下找到新建的Excel文件。
根据变量的值拆分到不同工作簿
【问题描述】
数据拆分还有一种常见的情况是根据DataFrame中一个列的不同取值对数据进行拆分。
【示例4-3】
本例使用的Excel文件的完整路径为“D:/Samples/ch04/01 数据拆分/根据变量的值拆分到不同工作簿/各科室人员.xlsx”。该文件打开后如图4-2所示,是不同科室员工的个人资料信息。要求将每个科室的人员资料单独拆分到一个Excel文件。
图4-2 不同科室员工的资料
- 编写下面的代码:
import pandas as pd
# 读取Excel文件
file_path = 'D:/Samples/ch04/01 数据拆分/根据变量的值拆分到不同工作簿/各科室人员.xlsx'
df = pd.read_excel(file_path, engine='openpyxl', sheet_name=0, index_col=0)
# 拆分数据并保存到不同的Excel文件
grouped = df.groupby('科室')
for group_name, group_data in grouped:
save_path = f'D:/Samples/ch04/01 数据拆分/根据变量的值拆分到不同工作簿/{group_name}.xlsx'
group_data.to_excel(save_path, engine='openpyxl')
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存。运行脚本,实现文件的拆分。可在原始数据文件的相同路径下找到新建的Excel文件。
【知识点扩展】
本例用到了DataFrame对象的groupby方法。该方法常用于对数据进行分组统计,在这里根据科室对数据分组汇总,并分别保存到不同的Excel文件。